#include "DynamicArray.h"
#include<stdlib.h>
#include<stdio.h>
#include<stdbool.h>
int InitArray(DmArr *arr)
{
    arr->dp=(ELementType *)malloc(arr->Size*sizeof(ELementType));
    if(arr->dp==NULL)
    {
        printf("InitArray Error!\n");
        return false;
    }
    // arr->Size=0;
    // arr->len=0;
    return true;
}

void FreeArray(DmArr *arr)
{
    if(arr->dp)
    {
        free(arr->dp);
        arr->dp=NULL;
    }
}

int ReallocArray(DmArr* arr)
{
    ELementType *temp=arr->dp;
    arr->dp = (ELementType *)malloc(sizeof(ELementType)*arr->Size*2);
    if(arr->dp == NULL)
    {
        printf("ReallocArray Error!\n");
        return false;
    }
    for(int i = 0;i < arr->len;i++)
    {
        arr->dp[i]=temp[i];
    }
    free(temp);
    arr->Size = arr->Size * 2;
    return true;
}
int InsertArray(DmArr *arr, ELementType element)
{
    if(arr->len==arr->Size)
    {
        if(ReallocArray(arr)==false)
        {
            printf("Can not contant more element!\n");
            return false;
        }
    }
    arr->dp[arr->len]=element;
    arr->len++;
    return true;
}

void Travel(DmArr *arr)
{
    // printf("\n");
    // printf("array len:%d  array size:%d\n",arr->len,arr->Size);
    // printf("=========================================\n");
    // for(int i=0;i<arr->len;i++)
    // {
    //     printf("%d ",(int)arr->dp[i]);
    // }
    // printf("\n");
    // printf("-----------------------------------------\n");
}

int DeleteArray(DmArr *arr, int index)
{
    if(arr->dp==NULL)
    {
        printf("Array is NULL\n");
        return false;
    }
    if(index<=0||index>arr->len)
    {
        printf("The index is error\n");
    }
    for(int i=index;i<arr->len;i++)
    {
        arr->dp[i-1]=arr->dp[i];
    }
    arr->len--;
    return true;
}

int FindArray(DmArr *arr, int num)
{
    // int i=0;
    // if(arr->dp==NULL)
    // {
    //     return false;
    // }
    // for(i=0;i<arr->len;i++)
    // {
    //     if((int)arr->dp[i]==num)
    //     {
    //         return i+1;
    //     }
    // }
}
